#include <stdio.h>      // 标准输入输出

#include "ohos_init.h"  // 用于初始化服务(services)和功能(features)
#include "cmsis_os2.h"  // CMSIS-RTOS API V2

#include "iot_gpio.h"   // OpenHarmony HAL API：IoT硬件设备操作接口-GPIO
#include "hi_io.h"      // 海思 Pegasus SDK：IoT硬件设备操作接口-IO
#include "iot_pwm.h"    // OpenHarmony HAL API：IoT硬件设备操作接口-PWM

#include "hi_pwm.h"

// 主线程函数
static void AlarmTask(void *arg)
{
    (void)arg;

    // 初始化GPIO模块
    IoTGpioInit(HI_IO_NAME_GPIO_5);
    IoTGpioInit(HI_IO_NAME_GPIO_6);

    // 设置GPIO5为GPIO功能
    hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO);
    // 设置GPIO6为GPIO功能
    hi_io_set_func(HI_IO_NAME_GPIO_6, HI_IO_FUNC_GPIO_6_GPIO);


    // 设置GPIO5为输出模式（引脚方向为输出）。
    IoTGpioSetDir(HI_IO_NAME_GPIO_5,IOT_GPIO_DIR_OUT);
    // 设置GPIO6为输出模式（引脚方向为输出）。
    IoTGpioSetDir(HI_IO_NAME_GPIO_6,IOT_GPIO_DIR_OUT);

    // 设置GPIO引脚的输出状态
    IoTGpioSetOutputVal(HI_IO_NAME_GPIO_5, IOT_GPIO_VALUE1);
    IoTGpioSetOutputVal(HI_IO_NAME_GPIO_6, IOT_GPIO_VALUE0);

}

// 入口函数
static void AlarmEntry(void)
{
    // 定义线程属性
    osThreadAttr_t attr;
    attr.name = "AlarmTask";
    attr.stack_size = 4096;
    attr.priority = osPriorityNormal;

    // 创建线程
    if (osThreadNew(AlarmTask, NULL, &attr) == NULL)
    {
        printf("[Alarm] Falied to create PwmBuzTask!\n");
    }
}

// 运行入口函数
SYS_RUN(AlarmEntry);